<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 数值的扩展：

        // 1. ES6提供了二进制和八进制数值的新的写法，分别用前缀0b（或0B）和0o（或0O）表示
        let m = 857;
        console.log("0b" + m.toString(2)); // 将m数值转成二进制
        console.log("0o" + m.toString(8)); // 将m数值转成八进制
        console.log("0x" + m.toString(16)); // 将m数值转成十六进制
        console.log(m.toString(10)); // 将m数值转成十进制

        // 输出其他进制的数值：
        console.log(0b1101011001);  //857
        console.log(0o1531);        //857  新式的八进制写法
        console.log(01531);        //857  老式的八进制写法
        console.log(0x359);         //857

        //rwx => 000 ~ 111   111
        console.log("=".repeat(30));
        // 2. Number.isFinite  检测一个数值是否为有限数（finite），即不是Infinity。
        // 如果参数类型不是数值，Number.isFinite一律返回false。
        console.log(Number.isFinite(Math.PI)); //true
        console.log(Number.isFinite(10)); //true
        console.log(Number.isFinite(12.4)); //true
        console.log(Number.isFinite(10/3)); // true
        console.log(Number.isFinite(Infinity)); // false
        console.log(Number.isFinite(-Infinity)); // false
        console.log(Number.isFinite("10")); // false
        console.log(Number.isFinite("abc")); // false
        console.log(Number.isFinite(NaN)); // false

        console.log(typeof Infinity);
        console.log(typeof NaN);
        // 结论： 正负无穷Infinity -Infinity 以及NaN都是Number类型，但不是数值，所以Number.isFinite（）返回false

        console.log("=".repeat(30));

        // 3. Number.isNaN 检测一个数值是否为  isNaN => is not a number 不是一个数值吗？
        // Number.isNaN（）判断参数是否是NaN
        console.log(Number.isNaN("1234")); // false
        console.log(Number.isNaN("12.34")); // false
        console.log(Number.isNaN(NaN)); // true
        console.log(Number("13.4a")); // NaN
        // console.log(parseInt("13.4a")); // 13
        // console.log(parseFloat("13.4a")); // 13.4
        console.log("=".repeat(30));

        // 4. ES6 将全局方法parseInt()和parseFloat()，移植到Number对象上面，行为完全保持不变。
        console.log(parseInt("13.4a")); // 13
        console.log(parseFloat("13.4a")); // 13.4
        // 在ES6后改成如下：
        console.log(Number.parseInt("13.4a")); // 13
        console.log(Number.parseFloat("13.4a")); // 13.4

        // 5. Number.isInteger 判断一个数是否为整数 is 是否 integer 整型
        // 在JS中无论整数还是浮点数都统称为数值类型Number
        console.log(Number.isInteger(3.4)); //false
        console.log(Number.isInteger(3)); //true
      
    </script>
</body>
</html>